/**
 * Created by fengliejv on 2017/9/11.
 */

import array.Interval;
import array.ShortestDistanceToACharacter821;
import bitCalculation.BinaryGap868;
import simulation.ProjectionAreaOf3dShapes883;
import simulation.RotateFunction396;
import tree.*;

import java.util.*;
//import tree.Bit


public class Test {


    static void init(List<List<Integer>> listList, int[] arr) {
        List<Integer> list = new ArrayList<>();
        for (int i : arr
        ) {
            list.add(i);
        }
        listList.add(list);
    }

    public static void main(String[] args) {
        List<List<Integer>> listList = new ArrayList<>();
        init(listList, new int[]{2});
        init(listList, new int[]{3, 4});
        init(listList, new int[]{6, 5, 7});
        init(listList, new int[]{4, 1, 8, 3});

//        Triangle120 countingBit338 = new Triangle120();
//        countingBit338.minimumTotal(listList);

        int[][] grifd = new int[][]{{-2, -3, 3},
                {-5, -10, 1},
                {10, 30, -5}
        };
        int[][] g = new int[][]{{-1}, {-1},

        };
        int[] a = new int[]{3, 0, 0, 0, 0, 2};
        int[] b = new int[]{3, 0, 0, 0, 0, 2};
//        int[] c = new int[]{4,3,2,1};
//        int num  =2126753390;
//        ListNode node = new ListNode();
//        ListNode n = node.init(a);
//        String s ="cbaebabacd";
//        String t ="abc";
        TreeMap map = new TreeMap();
        map.put(5, 5);
        map.put(3, 2);
        map.put(4, 2);
        map.put(7, 2);
        map.put(9, 2);
        map.put(8, 2);
        map.put(1, 2);
        PriorityQueue<Integer> priorityQueue = new PriorityQueue<>();

        int[][] grid = new int[][]{
                {3, 0, 8, 4},
                {2, 4, 5, 7},
                {9, 2, 6, 3},
                {0, 3, 1, 0}
        };
        int[][] gg = new int[][]{
                {1, 2, 3},
                {4, 5, 6},
                {7, 8, 9}
        };
//        System.out.println(map.firstKey());
//        TreeNode node = TreeNode.createBinTree(new int[]{3, 9, 20, -1, -1, 15, 7});
//        TrappingRainWaterII407 jr = new TrappingRainWaterII407();
//
//        System.out.println( jr.trapRainWater(gg));
//        System.out.println(jr.trapRainWater(grid));
//        System.out.println( jr.numSquares(13));


//        System.out.println(jr.reverseBits(   ));
        String[] token = new String[]{"looks", "pest", "stew", "show"};
//        ListNode head = buildListNode(new int[]{1});
        String string = "/home/";

        String[] input = new String[]{"Shogun", "Tapioca Express", "Burger King", "KFC"};
        String[] input2 = new String[]{"KFC", "Shogun", "Burger King"};
        int[] input3 = new int[]{4,3,2,6};

        int[][] inputs = new int[][]{};
        int[][] inputs2 = new int[][]{
                {1,2},{3,4}
        };

        Interval interval = new Interval(1,2);
        Interval interval1 = new Interval(3,5);
        Interval interval2 = new Interval(6,7);
        Interval interval3 = new Interval(8,10);
        Interval interval4 = new Interval(12,16);

        ProjectionAreaOf3dShapes883 s = new ProjectionAreaOf3dShapes883();
        int result = s.projectionArea(inputs2);
//        for (int i = 0; i < result.length; i++) {
//            System.out.println(result[i]);
//        }
        System.out.println(result);
//        ListNode listNode = new ListNode();
//        listNode = listNode.build(input2);
//        Thread thread1 = new Thread(()->{
//            try {
//                s.buzz(
//                        ()->{
//                            System.out.println("buzz");
//                        }
//                );
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//        });
//        thread1.start();
//
//        Thread thread2 = new Thread(()->{
//            try {
//                s.fizz(
//                        ()->{
//                            System.out.println("fizz");
//                        }
//                );
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//        });
//        thread2.start();
//        Thread thread3 = new Thread(()->{
//            try {
//                s.fizzbuzz(
//                        ()->{
//                            System.out.println("fizzbuzz");
//                        }
//                );
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//        });
//        thread3.start();
//        Thread thread4 = new Thread(()->{
//            try {
//                s.number(
//                        (i)->{
//                            System.out.println(i);
//                        }
//                );
//            } catch (InterruptedException e) {
//                e.printStackTrace();
//            }
//        });
//        thread4.start();
//        TreeNode.preOrderTraverse(result);
//        for (int i = 0; i < result.length; i++) {
//            System.out.print(result[i]);
//        }
//        Object result = s.canFinish(5,inputs);
//        Object result = s.sortList(buildListNode(input));
//        System.out.println(result);
//        s.insert("apple");
//        System.out.println(s.search("apple"));
//        System.out.println(s.search("app"));;
//        System.out.println(s.startsWith("app"));;
//        s.insert("app");
//        System.out.println(s.search("app"));;
//        s.get(2);
//        s.put(2,6);
//        s.get(1);
//        s.put(1,5);
//
//
//        s.put(1,2);
//        s.get(1);
//        s.get(2);
//
//        s.put(4,4);
//        s.get(4);


//        Object  result = s.largestNumber(input );
//        System.out.println(result);
//        printTree(root);

//        while (head!=null){
//            System.out.println(head.val);
//            head= head.next;
//        }


//        for (int i = 0; i < result.size(); i++) {
//            System.out.println(result.get(i));
//        }
//        System.out.println(result);
//        while (result!=null){
//            System.out.println(result.val);
//            result = result.next;
//        }

//        System.out.println();
//        for (int i = 0; i < result.length; i++) {
//            System.out.println(result[i]);
//        }
//        ListNode results = (ListNode) result;
//        while (results!=null){
//            System.out.println(results.val);
//        }
//        for (int i = 0; i < result.size(); i++) {
//            for (int j = 0; j < result.get(i).size(); j++) {
//                System.out.print(result.get(i).get(j));
//            }
//            System.out.println();
//        }
//        ;
//        for (Integer integer:integers
//             ) {
//            System.out.println(integer);
//        }

//        List<List<Integer>> result = s.multiply("2","3");
//        for (List<Integer> list : result
//             ) {
//            for (Integer i: list
//                 ) {
//                System.out.print(i);
//            }
//            System.out.println();
//        }
    }

    private static List<String> buildList(String[] arr) {
        List<String> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            list.add(arr[i]);
        }
        return list;
    }

//    private static ListNode buildListNode(int[] val) {
//        ListNode head = new ListNode();
//        ListNode cur = head;
//        for (int i = 0; i < val.length; i++) {
//            cur.val = val[i];
//            if (i == val.length - 1) {
//                continue;
//            }
//            cur.next = new ListNode();
//            cur = cur.next;
//        }
//        return head;
//    }

    private static void printTree(TreeNode node) {
        if (node == null) {
            return;
        }
        System.out.println(node.val);
        printTree(node.left);
        printTree(node.right);
    }


}
